home *** CD-ROM | disk | FTP | other *** search
/ Gigarom 4 / Mac Giga-ROM 4.0 - 1993.toast / FILES / DEV / A-B / Acius09:92.cpt / Acius09_92 / TN 30ƒ / Ext4D_DevTools_Dlg.p next >
Text File  |  1992-03-15  |  3KB  |  145 lines

  1. PROCEDURE Redraw4DWindows;
  2. CONST    EX_REDRAW =    46;
  3. VAR        Blk4D:ParmBlock;
  4. BEGIN
  5.     Call4D(EX_REDRAW,Blk4D);
  6. END; { Redraw4DWindows }
  7.  
  8. FUNCTION NumToolBoxTraps:INTEGER;
  9. BEGIN
  10.     IF NGetTrapAddress(_InitGraf,ToolTrap)=NGetTrapAddress($AA6E,ToolTrap) THEN NumToolBoxTraps:=$200
  11.     ELSE NumToolBoxTraps:=$400;
  12. END; { NumToolBoxTraps }
  13.  
  14. FUNCTION GetTrapType(TheTrap:INTEGER):TrapType;
  15. CONST    TrapMask = $0800;
  16. BEGIN
  17.     IF BAnd(TheTrap,TrapMask)>0 THEN GetTrapType:=ToolTrap ELSE GetTrapType:=OSTrap;
  18.     END; { GetTrapType }
  19.  
  20. FUNCTION TrapAvailable(TheTrap:INTEGER):BOOLEAN;
  21. VAR    TheType:TrapType;
  22. BEGIN
  23.     TheType:=GetTrapType(TheTrap);
  24.     IF TheType=ToolTrap THEN
  25.     BEGIN
  26.         TheTrap:=BAnd(TheTrap,$07FF);
  27.         IF TheTrap>=NumToolBoxTraps THEN TheTrap:=_Unimplemented;
  28.     END;
  29.     TrapAvailable:=NGetTrapAddress(TheTrap,TheType)<>NGetTrapAddress(_Unimplemented,ToolTrap);
  30. END;
  31.  
  32. FUNCTION GetScreenRect(AtLocation:Point):Rect;
  33. VAR    DeskPort:GrafPtr;
  34.         MyGD,CurGD:GDHandle;
  35.         Screen:Rect;
  36. BEGIN
  37.     MyGD:=NIL;
  38.     IF TrapAvailable(_GetGDevice) THEN
  39.     BEGIN
  40.         IF LongInt(AtLocation)<>$80008000 THEN
  41.         BEGIN
  42.             CurGD:=GetDeviceList;
  43.             WHILE (CurGD<>NIL) DO
  44.             BEGIN
  45.                 IF PtInRect(AtLocation,CurGD^^.GDRect) THEN
  46.                 BEGIN
  47.                     MyGD:=CurGD;
  48.                     CurGD:=NIL;
  49.                 END
  50.                 ELSE CurGD:=GetNextDevice(CurGD);
  51.             END;
  52.             IF MyGD=NIL THEN MyGD:=GetGDevice;
  53.         END
  54.         ELSE MyGD:=GetGDevice;
  55.     END;
  56.     IF MyGD<>NIL THEN 
  57.     BEGIN
  58.         Screen:=MyGD^^.GDRect;
  59.         IF MyGD=GetMainDevice THEN WITH Screen DO Top:=Top+IntegerPtr(MBarHeight)^;
  60.     END
  61.     ELSE
  62.     BEGIN
  63.         GetWMgrPort(DeskPort);
  64.         Screen:=DeskPort^.PortRect;
  65.         Screen.Top:=IntegerPtr(MBarHeight)^;
  66.     END;
  67.     GetScreenRect:=Screen;
  68. END; { GetScreenRect }
  69.  
  70. PROCEDURE    GetItemRect(MyDlg:DialogPtr;MyItem:INTEGER;Var ItemRect:Rect);
  71. VAR    Kind:INTEGER;
  72.         Content:Handle;
  73. BEGIN
  74.     GetDItem(MyDlg,MyItem,Kind,Content,ItemRect);
  75. END; { GetItemRect }
  76.  
  77. PROCEDURE    DrawOKButton(MyDlg:DialogPtr);
  78. VAR    CurPort:GrafPtr;
  79.         ItemRect:Rect;
  80. BEGIN
  81.     GetPort(CurPort);
  82.     SetPort(MyDlg);
  83.     ClipRect(MyDlg^.PortRect);
  84.     GetItemRect(MyDlg,OKButton,ItemRect);
  85.     PenNormal;
  86.     PenSize(3,3);
  87.     InsetRect(ItemRect,-4,-4);
  88.     FrameRoundRect(ItemRect,16,16);
  89.     PenNormal;
  90.     SetPort(CurPort);
  91. END; { DrawOKButton }
  92.  
  93. PROCEDURE    GetDlgLocation(DlgID:INTEGER;VAR H,V:INTEGER;VAR DlgFrame:Rect;MoveH,MoveV:BOOLEAN);
  94. VAR    DlgTemplate:DialogTHndl;
  95. BEGIN
  96.     WITH GetScreenRect(Point($80008000)) DO
  97.     BEGIN
  98.         IF MoveH THEN H:=LoWrd(BSR(Right-Left,1)) ELSE H:=0;
  99.         IF MoveV THEN V:=LoWrd(BSR(Bottom-Top,1)) ELSE V:=0;
  100.     END;
  101.     DlgTemplate:=DialogTHndl(GetResource('DLOG',DlgID));
  102.     DlgFrame:=DlgTemplate^^.BoundsRect;
  103.     WITH DlgFrame DO
  104.     BEGIN
  105.         IF MoveH THEN
  106.         BEGIN
  107.             H:=H-LoWrd(BSR(Right-Left,1));
  108.             OffSetRect(DlgFrame,-Left+H,0);
  109.         END
  110.         ELSE H:=Left;
  111.         IF MoveV THEN
  112.         BEGIN
  113.             V:=V-LoWrd(BSR(Bottom-Top,1));
  114.             OffSetRect(DlgFrame,0,-Top+V);
  115.         END
  116.         ELSE V:=Top;
  117.     END;
  118.     InsetRect(DlgFrame,-8,-8);
  119. END; { GetDlgLocation }
  120.  
  121. PROCEDURE ShowDevToolDlg;
  122. VAR    Click,DH,DV,DlgID:INTEGER;
  123.         MyDlg:DialogPtr;
  124.         CurPort:GrafPtr;
  125.         DlgRect:Rect;
  126. BEGIN
  127.     GetPort(CurPort);
  128.     DlgID:=GetResNum('4BNX','DLOG',DevToolDlgID);
  129.     MyDlg:=GetNewDialog(DlgID,Nil,Pointer(-1));
  130.     IF MyDlg<>NIL THEN
  131.     BEGIN
  132.         MySetCursor(0);
  133.         GetDlgLocation(DlgID,DH,DV,DlgRect,TRUE,FALSE);
  134.         DV:=38;
  135.         MoveWindow(MyDlg,DH,DV,FALSE);
  136.         ShowWindow(MyDlg);
  137.         SetPort(MyDlg);
  138.         DrawOKButton(MyDlg);
  139.         REPEAT ModalDialog(Nil,Click) UNTIL (Click=OKButton);
  140.         DisposDialog(MyDlg);
  141.         SetPort(CurPort);
  142.         Redraw4DWindows;
  143.     END;
  144. END; { ShowDevToolDlg }
  145.